// axios前后端的中间件

import Vue from 'vue'
import axios from 'axios'
import {Message} from 'element-ui'



// 导入路由对象
import router from '../router/index'    


// 请求拦截器
axios.interceptors.request.use(function(config){
    // console.log(config)
    // getItem得到
    // 读取登录信息
    
    const userInfo = JSON.parse(sessionStorage.getItem('userinfo')) || '{}'
    // 将登录凭证通过自定义请求头发送给数据接口
    config.headers.authorization = userInfo.token
    return config
})

// 所谓响应拦截器就是把后端发送给前端的数据拦截下来，让我们操作
// 因为后端返回给前端的数据是很杂的，而我需要的却只是一部分，所以要做一个过滤
// 响应拦截器  
axios.interceptors.response.use(function(config){
    // 登录超时或其他错误出现时，给出错误提示
    if(config.data.code!==200){
        Message:({
            type:'error',
            message:config.data.msg
        })
    }
     // 再重定向到登录页面  
        // 必须要导入了路由对象才能这样使用
        // 注意写法不一样！！
        if(config.data.code===403){
            router.push('/login')
        }
    return config.data
})


// 挂载
Vue.prototype.$http=axios
// 配置baseUrl
// axios.defaults.baseURL='http://localhost:3000'

// 开发环境
// rocess.env.NODE_ENV系统变量，区分是生产环境还是开发环境
if(process.env.NODE_ENV==='development'){
    axios.defaults.baseURL='';
}else if(process.env.NODE_ENV==='production'){  //生产坏境
    axios.defaults.baseURL='http://localhost:3000'
}
// 暴露
export default axios